<?php

require_once('dao/CommandeDao.php');
require_once('dao/ClientDao.php');
require_once('utils/csv.inc.php');
require_once('utils/ftp.inc.php');

/**
 * Classe de création de fichier CSV de demande d'activation
 */
class ActivationRequest {
	
	public static function createRequest($idCommande){
		global $logger;
		
		$logger->info("Génération du fichier d'activation de ligne pour la commande : " + $idCommande);
		
		$data = array();
		$count = 0;
		
		// Récupération la commande
		$commande = CommandeDao::findByCommandeId($idCommande);
		
		if ($commande["statut"] != "en cours"){
			$logger->error("La commande  possède un statut incorrect :  " + $commande["statut"]);
			throw new Exception("La commande  possède un statut incorrect");
		}
		
		// Récupération de la fiche client
		$clients = ClientDao::searchById($commande['code_client_hto']);
		
		if (count($clients) == 0){
			$logger->error("La fiche client est inexistant en base pour le client ". $commande['code_client_hto']);
			throw new Exception("La fiche client est inexistante");
		} else {
			$ficheClient = $clients[0];
		}
		
		// Récupération les lignes
		$lignesCommande = CommandeDao::getLignesCommandeMobile($idCommande);
		
		// Si la commande ne possède aucune ligne de commande 
		if ($lignesCommande == null){
			$logger->error("La commande ne possède aucune ligne en base");
			throw new Exception("La commande ne possède aucune ligne");
		}
		
		// Génération chaque ligne du fichier CSV
		foreach ($lignesCommande as $ligneCommande){
			
			$logger->info("Traitement de la ligne : ".$ligneCommande["id"]);
			
			// Analyse du Request Type
			if (!empty($ligneCommande['numero_rio'])){
				// Demande portabilité
				$requestType =	"NP";
			} else {
				// Création de ligne
				$requestType =	"NA";
			}
			
			// Initialisation
			$statut_csv = array(	'DATA'=>'N',
									'Blackberry'=>'N',
									'Foreign Status'=>'N',
									'Voice Bundle'=>'N',
									'SMS'=>'N',
					        		'Other'=>'N');
									   
			// Récupération de l'offre à acheter
			$offreMobileHA = CommandeDao::getOffresHAFromLigneCommande($ligneCommande['id']);
			if ($offreMobileHA != null)
			{
				//$codeOffreMobileHA = $offreMobileHA['code_article'];
				if($offreMobileHA['temps']<>''){$statut_csv['Voice Bundle'] = $offreMobileHA['temps'];}
				if($offreMobileHA['data']<>''){$statut_csv['DATA'] = $offreMobileHA['data'];}
				if($offreMobileHA['sms']<>''){$statut_csv['SMS'] = $offreMobileHA['sms'];}
			}
			
			// Récupération des options
			$optionsMobileHA = CommandeDao::getOptionsHAFromLigneCommande($ligneCommande['id']);
			//var_dump($optionsMobileHA);
			
			// Initialisation des familles d'option par défaut
			/*$famillesOptionsHA = array('DATA'=>'N',
									   'Blackberry'=>'N',
									   'SMS'=>'N',
					                   'Foreign Status'=>'N',
					                   'Other'=>'N');*/
			
			// Si des options ont été choisies
			if ($optionsMobileHA != null){
				foreach ($optionsMobileHA as $optionMobileHA)
				{
				if($optionMobileHA['temps']<>''){$statut_csv['Voice Bundle'] = $optionMobileHA['temps'];}
				if($optionMobileHA['data']<>''){$statut_csv['DATA'] = $optionMobileHA['data'];}
				if($optionMobileHA['sms']<>''){$statut_csv['SMS'] = $optionMobileHA['sms'];}
				if($optionMobileHA['bb']<>''){$statut_csv['Blackberry'] = $optionMobileHA['bb'];}
				if($optionMobileHA['international']<>''){$statut_csv['Foreign Status'] = $optionMobileHA['international'];}
				}
			}
			
				$date_souhaite=array();
				if($ligneCommande['date_souhaite']){
				$date_souhaite=explode("/",$ligneCommande['date_souhaite']);
				$date_souhaite=date($date_souhaite[2].'/'.$date_souhaite[1].'/'.$date_souhaite[0]);
				}else{
				$date_souhaite='';
				}
				
			$data[$count] = array(
					"Id" => $count + 1,															// Compteur 
					"RequestDate" => date("Y-m-d") , 											// Date de création de la ligne
					"RequestType" => $requestType,   											// Type de demande
					"OrigyneId (SIM Serial)" => $ligneCommande['carte_sim'],					// Carte SIM
					"ExternalReference1 (LastName)" => $ficheClient['raison_social'],			// Raison social de la société
					"ExternalReference2 (FirstName)" => $ligneCommande['utilisateur'],			// Utilisateur de la ligne
					"IVROptionalCode (ZipCode)" => CODE_IVR,									// Code IVR
					"Offer" => $ficheClient['code_client_hto'],																// Offre 													
					"MSISDN" => $ligneCommande['msisdn'],										// MSISDN de la ligne existante pour la portabilité
					"RIO" => $ligneCommande['numero_rio'],										// RIO
					"PortingDate" => $date_souhaite,											// Date de la demande de portabilité
					"DATA" => $statut_csv['DATA'], 												// Option DATA à acheter
					"Blackberry" => $statut_csv["Blackberry"],									// Option Blackberry à acheter
					"Foreign Status" => $statut_csv["Foreign Status"], 							// Activation ou non des appels internationnals
					"Voice Bundle" => $statut_csv['Voice Bundle'], 								// Offre voix à acheter
					"SMS" => $statut_csv["SMS"], 												// Option SMS à acheter
					"Other" => $statut_csv["Other"], 											// Autre options à acheter
					"Réduc. Abonnement" => $ligneCommande['abonnement'],
					"Réduc. Option Mobile" => $ligneCommande['option_mobile'],
					"Réduc. Terminal" => $ligneCommande['mobil'],
					"Réduc. Minute National" => $ligneCommande['minute_national'],
					"Réduc. Minute International" => $ligneCommande['minute_international'],
					"Grille Tarifaire" => $ligneCommande['grille_tarifaire'],
					"Forfait Partage" => $ligneCommande['forfait_partage'],
					"Forfait Jours" => $ligneCommande['forfait_jours'],
					"Forfait Horaires" => $ligneCommande['forfait_horaires'],
					"Engagement" => $ligneCommande['engagement'],
					"Interne" => $ligneCommande['interne'],
					"Vendeur" => $ficheClient['vendeur']
			);
			
			$count++;
		}
	
		// Nom du fichier CSV à générer
		//recup des millisecondes
		$time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
		$msec = substr($time, strpos($time, ".") + 1);
				
		$filename = "CODE_IVR_activ_demande_".date("Ymd_His")."_".$msec.".csv";
		
		$logger->info("Génération du fichier CSV de demande d'activation : " . $filename);
		
		// Appel de la fonction de génération de fichier CSV
		writeCSV(MM_CSV_PATH,$filename,$data);
		
		// Envoi sur le serveur en FTP
		if (MM_FTP_ENABLE){
			uploadFile(MM_CSV_PATH.$filename,
						MM_FTP_PROVISIONNING.$filename,
						MM_FTP_HOST,
						MM_FTP_USERNAME,
						MM_FTP_PASSWORD,
						MM_ARCHIVE_PATH."/activation/".$filename);
			
			$logger->info("Envoi FTP du fichier de demande d'activation réalisé  : " . MM_FTP_HOST);
			
		} else {
			$logger->info("L'envoi FTP est désactivé");
		}
	}

}




